#ifndef _COMM_S2A_H_
#define _COMM_S2A_H_

#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

//主要工作函数
//respond为返回测响应，需要指向堆上的内存
typedef int (*s2a_work_func)(const char * request, int request_len, 
                             char ** respond, int * respond_len, void * p);

#ifndef __cplusplus 
#define bool int
#define true 1
#define false 0
#endif

typedef struct Worker {
    int fd;
} Worker;

bool worker_init();

//创建一个异步处理器
Worker * worker_create(s2a_work_func work, int thread_cnt, void * data);

//发送一个处理请求， sn 序列号  timeout_sec 超时数
//request 不能指向栈上的内存
bool post_request(Worker * worker, uint64_t sn, int timeout_sec, 
                  const char * request, int request_len);

//获取相应，result 表示处理结果， -1表示超时
bool get_respond(Worker * worker, uint64_t * sn, int * result, 
                 const char ** request, int * request_len, 
                 char ** respond, int * respond_len);

//销毁
bool worker_destory(Worker * worker);

#ifdef __cplusplus
}
#endif

#endif
